// MQTT响应监听工具
const config = require('./config.js')

class MqttListener {
  
  // 真实的MQTT响应监听（通过WebSocket或轮询实现）
  static startListening(callback) {
    console.log('开始监听真实MQTT响应...')
    // 不再使用模拟数据，等待真实的设备响应
  }
  
  // 通过WebSocket监听实时响应（如果服务器支持）
  static connectWebSocket(onMessage) {
    const wsUrl = config.serverUrl.replace('http', 'ws') + ':8080'
    console.log('尝试连接WebSocket:', wsUrl)
    
    try {
      wx.connectSocket({
        url: wsUrl,
        success: () => {
          console.log('WebSocket连接成功')
        },
        fail: (err) => {
          console.error('WebSocket连接失败:', err)
        }
      })
      
      wx.onSocketMessage((res) => {
        try {
          const data = JSON.parse(res.data)
          console.log('收到WebSocket消息:', data)
          if (onMessage) onMessage(data)
        } catch (e) {
          console.error('解析WebSocket消息失败:', e)
        }
      })
      
    } catch (error) {
      console.error('WebSocket不支持或连接失败:', error)
    }
  }
  
  // 轮询检查设备状态
  static pollDeviceStatus(deviceId, callback) {
    const pollInterval = setInterval(() => {
      wx.request({
        url: `${config.serverUrl}/api/mqtt/client/getStatus`,
        method: 'GET',
        data: { clientId: deviceId },
        success: (res) => {
          if (res.statusCode === 200) {
            console.log('设备状态轮询结果:', res.data)
            if (callback) callback(res.data)
          }
        },
        fail: (err) => {
          console.error('轮询设备状态失败:', err)
        }
      })
    }, 3000) // 每3秒轮询一次
    
    // 30秒后停止轮询
    setTimeout(() => {
      clearInterval(pollInterval)
      console.log('停止设备状态轮询')
    }, 30000)
    
    return pollInterval
  }
}

module.exports = MqttListener